package 临时工具.shangyu1;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Data
public class 解析供水短信 implements Serializable {

    static Pattern rule = Pattern.compile("\\((.+?)\\)", Pattern.CASE_INSENSITIVE);
    static Pattern numPattern = Pattern.compile("[0-9][0-9]*");
    static List<String> street = Arrays.asList("丰惠镇", "百官街道", "永和镇", "章镇镇", "上浦镇", "汤浦镇", "长塘镇", "梁湖街道", "曹娥街道", "东关街道", "道墟街道", "崧厦街道", "驿亭镇", "小越街道", "谢塘镇", "盖北镇");
    // 镇列表
    static List<String> town = Arrays.asList(
            "上浦", "丰惠", "永和", "汤浦", "盖北", "章镇", "谢塘",
            "长塘", "驿亭"
    );

    public static class LabelValue {
        public String label;
        public String value;

        public LabelValue(String label, String value) {
            this.label = label;
            this.value = value;
        }

        @Override
        public String toString() {
            return "LabelValue{label='" + label + "', value='" + value + "'}";
        }
    }

    public static List<LabelValue> analysis(String str) {
        // 匹配()中的内容
        Matcher matcher = rule.matcher(str);

        List<String> matches = new ArrayList<>();
        while (matcher.find()) {
            matches.add(matcher.group());
        }

        // 合并匹配结果，进行一系列替换
        String combined = String.join(",", matches)
                .replace("；", "")
                .replace("。", ",")
                .replace("）", "[")
                .replace("（", "]")
                .replace("(", "]")
                .replaceAll("(?<=\\[).*?(?=\\])", ",")
                .replaceAll("\\[,\\]", ",")
                .replace("，", ",")
                .replace("]", "")
                .replace(")", "")
                .replace("m³", "")
                .replace("吨", "");

        // 分割字符串
        String[] parts = combined.split(",");

        // 处理结果
        List<LabelValue> result = new ArrayList<>();

        for (String item : parts) {
            Matcher numMatcher = numPattern.matcher(item);
            if (numMatcher.find()) {
                String value = numMatcher.group();
                String label = item.replace(value, "");

                if (!"含用户".equals(label)) {
                    result.add(new LabelValue(label, value));
                }
            }
        }
        // 更新 label 字段
        for (LabelValue a : result) {
            if (town.contains(a.label)) {
                a.label = a.label + "镇";
            } else if ("工业区".equals(a.label)) {
                a.label = "上虞杭州湾精细化工园区";
            } else {
                a.label = a.label + "街道";
            }
        }
        return result;
//        return result.stream().filter(a -> street.contains(a.label)).collect(Collectors.toList());
    }


    public static void main(String[] args) {
        List<String> list = Arrays.asList(
                "2025.6.10供水量291131吨(含监控大用户144097吨、工业水监控大用户9576吨)。水厂:第一水厂131410吨，大三角121500吨，永和17061吨，汤浦11642吨；工业水9518吨。各所：城区62510吨(百官45888吨，梁湖4399吨，小越8688吨，驿亭3535吨。含用户12057吨）；虞西44498吨（曹娥29646吨，东关7425吨，长塘1377吨，道墟6050吨。含用户13413吨）；虞北162519吨（崧厦20898吨，滨海1904吨，工业区121502吨，谢塘5424吨，盖北3273吨，工业水9518吨。含用户117118吨、工业水用户9576吨）；虞东10039吨(永和3027吨，丰惠7012吨。含用户682吨）；虞南9583吨（汤浦2240吨，上浦2328吨，章镇5015吨。含用户827吨);下管1982吨(丁宅721吨，下管632吨，陈溪273吨，岭南356吨）。汤浦水位22.48米，库容7789万立方；四明湖数水位12.78米，库容4445万立方。",
                "2025.6.9供水量283071吨(含监控大用户135862吨、工业水监控大用户9122吨)。水厂:第一水厂130460吨，大三角115100吨，永和16783吨，汤浦11687吨；工业水9041吨。各所：城区61374吨(百官45142吨，梁湖4413吨，小越8583吨，驿亭3236吨。含用户10472吨）；虞西44840吨（曹娥30487吨，东关7153吨，长塘1434吨，道墟5766吨。含用户13104吨）；虞北155239吨（崧厦20299吨，滨海1560吨，工业区115252吨，谢塘5645吨，盖北3442吨，工业水9041吨。含用户110660吨、工业水用户9122吨）；虞东10030吨(永和3016吨，丰惠7014吨。含用户677吨）；虞南9682吨（汤浦2240吨，上浦2221吨，章镇5221吨。含用户949吨);下管1906吨(丁宅722吨，下管588吨，陈溪300吨，岭南296吨）。汤浦水位22.53米，库容7833万立方；四明湖数水位12.79米，库容4454万立方。",
                "2025.6.4供水量295755吨(含监控大用户142576吨、工业水监控大用户9331吨)。水厂:第一水厂133330吨，大三角123500吨，永和17563吨，汤浦12093吨；工业水9269吨。各所：城区65871吨(百官48618吨，梁湖4526吨，小越8910吨，驿亭3817吨。含用户13302吨）；虞西47683吨（曹娥32243吨，东关7683吨，长塘1493吨，道墟6264吨。含用户15061吨）；虞北159701吨（崧厦20943吨，滨海1504吨，工业区118497吨，谢塘5934吨，盖北3554吨，工业水9269吨。含用户112583吨、工业水用户9331吨）；虞东10476吨(永和3182吨，丰惠7294吨。含用户802吨）；虞南10030吨（汤浦2305吨，上浦2272吨，章镇5453吨。含用户828吨);下管1994吨(丁宅812吨，下管630吨，陈溪288吨，岭南264吨）。汤浦水位22.64米，库容7931万立方；四明湖数水位12.84米，库容4499万立方；曹娥江取水量79704立方。"

        );

        for (String str :list) {
            String time = DateUtil.format(DateUtil.parse(str.substring(0, str.indexOf("供水量"))), DatePattern.NORM_DATE_PATTERN);
            System.out.println(time);
            List<LabelValue> analysis = analysis(str);
            System.out.println(analysis.size());
            analysis.forEach(System.out::println);
            System.out.println();
            System.out.println();
        }
    }
}
